package com.ktgj.common.sms.entity;

import com.ktgj.common.sms.service.GetMoDataPuller;
import com.ktgj.common.sms.service.GetMoDataResult;

import java.util.List;

public class RecvBFmoThread extends Thread {

    GetMoDataPuller getMoDataPuller = null;

    public RecvBFmoThread(String account,String passowrd) {
        this.getMoDataPuller = new GetMoDataPuller(account, passowrd);
    }
    /**
     * 接收上行线程
     */
    public void run() {
        while (true) {
            try {
                GetMoDataResult getMoDataResult = this.getMoDataPuller.pull();
                List<GetMoDataResult.MoInfo> moPackList = getMoDataResult.MoInfos;
                if (moPackList == null || moPackList.size() == 0) {
                    try {
                        Thread.sleep(3000L);
                    } // 没有上行，延时3~10秒
                    catch (Exception e) {
                        e.printStackTrace();
                    }
                } // 如果没有上行
                else {
                    for (GetMoDataResult.MoInfo moInfo : getMoDataResult.MoInfos) {
                        System.out.println("短信内容 " + moInfo.MoContent);
                    }
                    // 有上行
                    // 添加到上行队列
                    // add mo queue
                    // 这里不要做复杂的耗时的处理，将收到的上行保存在一个队列中(队列线程安全)，由另外一个线程去处理。
                    continue; // 继续循环
                }
            } catch (Exception e) {
                e.printStackTrace();
                try {
                    Thread.sleep(5000L);
                } //循环出现异常，暂停5秒
                catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        }// 循环调用获取上行的方法
    }
}
